home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / inventor / SpaceballViewer / SoSceneMenu.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  8.8 KB  |  258 lines

  1. /*
  2.  * Copyright (c) 1991-94 Silicon Graphics, Inc.
  3.  *
  4.  * Permission to use, copy, modify, distribute, and sell this software and
  5.  * its documentation for any purpose is hereby granted without fee, provided
  6.  * that the name of Silicon Graphics may not be used in any advertising or
  7.  * publicity relating to the software without the specific, prior written
  8.  * permission of Silicon Graphics.
  9.  *
  10.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
  11.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
  12.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  13.  *
  14.  * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
  15.  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
  16.  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE
  17.  * POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN
  18.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19.  */
  20. #ifndef  _SO_SCENE_MENU_
  21. #define  _SO_SCENE_MENU_
  22.  
  23. // -*- C++ -*-
  24. //
  25. // header for TopbarMenu
  26. //
  27.  
  28. #include <X11/Intrinsic.h>
  29. #include <Inventor/SbBasic.h>
  30.  
  31. enum MenuEntries {
  32.     SV_FILE = 0,  // start at 0 since we use an array
  33.     SV_FILE_ABOUT, 
  34.     SV_FILE_OPEN, 
  35.     SV_FILE_IMPORT, 
  36.     SV_FILE_NEW, 
  37.     SV_FILE_SAVE, 
  38.     SV_FILE_SAVE_AS, 
  39.     SV_FILE_SAVE_ENV, 
  40.     SV_FILE_READ_ENV, 
  41.     SV_FILE_PRINT, 
  42.     SV_FILE_QUIT, 
  43.     
  44.     SV_EDIT, 
  45.     SV_EDIT_PICK_PARENT, 
  46.     SV_EDIT_PICK_ALL, 
  47.     SV_EDIT_CUT, 
  48.     SV_EDIT_COPY, 
  49.     SV_EDIT_PASTE, 
  50.     SV_EDIT_DELETE, 
  51.     
  52.     SV_VIEW, 
  53.     SV_VIEW_PICK, 
  54. #ifdef EXPLORER
  55.     SV_VIEW_USER,
  56. #endif
  57. // SPACEBALL
  58. // Examiner viewer only for spaceball manipulation
  59. #ifdef notdef
  60.     SV_VIEW_EXAMINER, 
  61.     SV_VIEW_FLY, 
  62.     SV_VIEW_WALK, 
  63.     SV_VIEW_PLANE, 
  64. #endif
  65.     SV_VIEW_SELECTION, 
  66.     SV_VIEW_FOG, 
  67.     SV_VIEW_ANTIALIASING, 
  68.     SV_VIEW_SCREEN_TRANSPARENCY, 
  69.     SV_VIEW_BLEND_TRANSPARENCY, 
  70.     SV_VIEW_DELAY_BLEND_TRANSPARENCY, 
  71.     SV_VIEW_SORT_BLEND_TRANSPARENCY, 
  72.     SV_VIEW_BKG_COLOR, 
  73. // SPACEBALL
  74. // Menu item for popping up spaceball translation scale slider
  75.     SV_VIEW_SP_BALL_SCALE,
  76.     
  77.     SV_EDITOR, 
  78.     SV_EDITOR_TRANSFORM, 
  79.     SV_EDITOR_MATERIAL, 
  80.     SV_EDITOR_COLOR, 
  81.  
  82.     SV_MANIP, 
  83.     SV_MANIP_HANDLEBOX, 
  84.     SV_MANIP_TRACKBALL, 
  85.     SV_MANIP_JACK,
  86.     SV_MANIP_CENTERBALL,
  87.     SV_MANIP_XFBOX,
  88.     SV_MANIP_TABBOX,
  89.  
  90. // rotateCylindrical rotateDisc RotateSpherical 
  91. // scale1 scale2 scale2Uniform scaleUniform 
  92. // translate1 translate2 
  93.  
  94.     SV_MANIP_NONE, 
  95.     SV_MANIP_REPLACE_ALL, 
  96.     
  97.     SV_LIGHT, 
  98.     SV_LIGHT_ADD_DIRECT, 
  99.     SV_LIGHT_ADD_POINT, 
  100.     SV_LIGHT_ADD_SPOT, 
  101.     SV_LIGHT_AMBIENT_EDIT, 
  102.     SV_LIGHT_TURN_ON, 
  103.     SV_LIGHT_TURN_OFF, 
  104.     SV_LIGHT_SHOW_ALL, 
  105.     SV_LIGHT_HIDE_ALL, 
  106.     
  107.     SV_SELECTION, 
  108.     SV_SEL_SINGLE_SELECT, 
  109.     SV_SEL_TOGGLE_SELECT, 
  110.     SV_SEL_SHIFT_SELECT, 
  111.     
  112.     SV_MENU_NUM,    // this must be the last entry
  113. };
  114.  
  115.  
  116. // different types of menu item buttons
  117. enum MenuItems {
  118.     SV_SEPARATOR, 
  119.     SV_PUSH_BUTTON, 
  120.     SV_TOGGLE_BUTTON, 
  121.     SV_RADIO_BUTTON, 
  122. };
  123.  
  124. struct SoSceneViewerButton {
  125.     char        *name;
  126.     int        id;
  127.     int      buttonType; // PUSH, TOGGLE, RADIO
  128.     char    *accelerator; // e.g. "Alt <Key> p" or "Ctrl <Key> u"
  129.     char    *accelText;   // text that appears in the menu item
  130. };
  131. struct SoSceneViewerMenu {
  132.     char        *name;
  133.     int            id;
  134.     struct     SoSceneViewerButton *subMenu;
  135.     int        subItemCount;
  136. };
  137.  
  138.  
  139. static SoSceneViewerButton fileData[] = {
  140. #ifndef EXPLORER
  141.     {"About...",        SV_FILE_ABOUT,    SV_PUSH_BUTTON, 0, 0 },
  142.     {"",                SV_SEPARATOR },
  143.     {"New",            SV_FILE_NEW,    SV_PUSH_BUTTON, "Alt <Key> n", "Alt+n" },
  144.     {"Open...",            SV_FILE_OPEN,    SV_PUSH_BUTTON, "Alt <Key> o", "Alt+o" },
  145.     {"Import...",        SV_FILE_IMPORT,    SV_PUSH_BUTTON, "Alt <Key> i", "Alt+i" },
  146. #endif /* EXPLORER */
  147.     {"Save",            SV_FILE_SAVE,    SV_PUSH_BUTTON, "Alt <Key> s", "Alt+s" },
  148.     {"Save As...",        SV_FILE_SAVE_AS,    SV_PUSH_BUTTON, "Alt Shift <Key> s", "Alt+S" },
  149. #ifndef EXPLORER
  150.     {"",                SV_SEPARATOR },
  151.     {"Read Environment...", SV_FILE_READ_ENV,    SV_PUSH_BUTTON, 0, 0 },
  152.     {"Save Environment...", SV_FILE_SAVE_ENV,    SV_PUSH_BUTTON, 0, 0 },
  153.     {"",                SV_SEPARATOR },
  154.     {"Print...",        SV_FILE_PRINT,    SV_PUSH_BUTTON, "Alt <Key> p", "Alt+p" },
  155.     {"Quit",            SV_FILE_QUIT,    SV_PUSH_BUTTON, "Alt <Key> q", "Alt+q" },
  156. #endif /* EXPLORER */
  157. };
  158.  
  159. #ifndef EXPLORER
  160. static SoSceneViewerButton editData[] = {
  161.     {"Pick Parent",    SV_EDIT_PICK_PARENT, SV_PUSH_BUTTON, 0, 0 },
  162.     {"Pick All",    SV_EDIT_PICK_ALL, SV_PUSH_BUTTON, "Alt <Key> a", "Alt+a" },
  163.     {"",            SV_SEPARATOR },
  164.     {"Cut",        SV_EDIT_CUT,    SV_PUSH_BUTTON, "Alt <Key> x", "Alt+x" },
  165.     {"Copy",        SV_EDIT_COPY,    SV_PUSH_BUTTON, "Alt <Key> c", "Alt+c" },
  166.     {"Paste",        SV_EDIT_PASTE,    SV_PUSH_BUTTON, "Alt <Key> v", "Alt+v" },
  167.     {"Delete",        SV_EDIT_DELETE,    SV_PUSH_BUTTON, "<Key> BackSpace", 0 },
  168. };
  169. #endif /* EXPLORER */
  170.  
  171. static SoSceneViewerButton viewData[] = {
  172.     {"Pick/Edit",  SV_VIEW_PICK,           SV_TOGGLE_BUTTON, 0, 0},
  173. #ifdef EXPLORER
  174.     {"User Pick Mode",  SV_VIEW_USER,    SV_TOGGLE_BUTTON, 0, 0},
  175. #endif /* EXPLORER */
  176. #ifdef notdef
  177.     {"",       SV_SEPARATOR },
  178.     {"Examiner",   SV_VIEW_EXAMINER,        SV_RADIO_BUTTON, 0, 0},
  179.     {"Fly",       SV_VIEW_FLY,           SV_RADIO_BUTTON, 0, 0},
  180.     {"Walk",       SV_VIEW_WALK,           SV_RADIO_BUTTON, 0, 0},
  181.     {"Plane",       SV_VIEW_PLANE,           SV_RADIO_BUTTON, 0, 0},
  182. #endif
  183.     {"",       SV_SEPARATOR },
  184.     {"View Selection",SV_VIEW_SELECTION,     SV_PUSH_BUTTON, 0, 0},
  185.     {"Fog",        SV_VIEW_FOG,            SV_TOGGLE_BUTTON, 0, 0},
  186.     {"Antialiasing",SV_VIEW_ANTIALIASING,   SV_TOGGLE_BUTTON, 0, 0},
  187.     {"",       SV_SEPARATOR },
  188.     {"Screen Door Transparency", SV_VIEW_SCREEN_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  189.     {"Blended Transparency", SV_VIEW_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  190.     {"Delayed Blended Transparency", SV_VIEW_DELAY_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  191.     {"Sorted Blended Transparency", SV_VIEW_SORT_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  192.     {"",        SV_SEPARATOR },
  193.     {"Edit Background Color...", SV_VIEW_BKG_COLOR,  SV_PUSH_BUTTON, 0, 0},
  194. // SPACEBALL
  195. // Menu item for popping up spaceball translation scale slider
  196.     {"Edit Spaceball Translation Scale...", SV_VIEW_SP_BALL_SCALE,  SV_PUSH_BUTTON, 0, 0}
  197. };
  198.  
  199. static SoSceneViewerButton editorData[] = {
  200.     {"Material Editor...",    SV_EDITOR_MATERIAL,    SV_PUSH_BUTTON, 0, 0},
  201.     {"Color Editor...",       SV_EDITOR_COLOR,       SV_PUSH_BUTTON, 0, 0},
  202.     {"Transform Sliders...",  SV_EDITOR_TRANSFORM,   SV_PUSH_BUTTON, 0, 0},
  203. #ifdef notdef
  204.     {"Texture Mapper ....", SV_TEXTURE_MAPPER, SV_PUSH_BUTTON, 0, 0},
  205. #endif
  206. };
  207.  
  208. static SoSceneViewerButton manipData[] = {
  209.     {"Trackball",   SV_MANIP_TRACKBALL,      SV_RADIO_BUTTON, 0, 0},
  210.     {"HandleBox",   SV_MANIP_HANDLEBOX,      SV_RADIO_BUTTON, 0, 0},
  211.     {"Jack",        SV_MANIP_JACK,           SV_RADIO_BUTTON, 0, 0},
  212.     {"Centerball",  SV_MANIP_CENTERBALL,     SV_RADIO_BUTTON, 0, 0},
  213.     {"TransformBox",SV_MANIP_XFBOX,          SV_RADIO_BUTTON, 0, 0},
  214.     {"TabBox",      SV_MANIP_TABBOX,         SV_RADIO_BUTTON, 0, 0},
  215.     {"None",        SV_MANIP_NONE,           SV_RADIO_BUTTON, 0, 0},
  216.     {"",            SV_SEPARATOR },
  217.     {"Replace",     SV_MANIP_REPLACE_ALL,    SV_TOGGLE_BUTTON, 0, 0}
  218. };
  219.  
  220. static SoSceneViewerButton lightData[] = {
  221.     {"Create Dir Light",        SV_LIGHT_ADD_DIRECT,    SV_PUSH_BUTTON, 0, 0},
  222.     {"Create Point Light",        SV_LIGHT_ADD_POINT,        SV_PUSH_BUTTON, 0, 0},
  223.     {"Create Spot Light",        SV_LIGHT_ADD_SPOT,        SV_PUSH_BUTTON, 0, 0},
  224.     {"",                SV_SEPARATOR },
  225.     {"Ambient Lighting...",        SV_LIGHT_AMBIENT_EDIT,  SV_PUSH_BUTTON, 0, 0},
  226.     {"",                SV_SEPARATOR },
  227.     {"Turn all ON",            SV_LIGHT_TURN_ON,        SV_PUSH_BUTTON, 0, 0},
  228.     {"Turn all OFF",            SV_LIGHT_TURN_OFF,        SV_PUSH_BUTTON, 0, 0},
  229.     {"Show all Icons",            SV_LIGHT_SHOW_ALL,        SV_PUSH_BUTTON, 0, 0},
  230.     {"Hide all Icons",            SV_LIGHT_HIDE_ALL,        SV_PUSH_BUTTON, 0, 0},
  231.     {"",                SV_SEPARATOR },
  232. };
  233.  
  234. #ifndef EXPLORER
  235. static SoSceneViewerButton selData[] = {
  236.     {"Single Selection", SV_SEL_SINGLE_SELECT,  SV_RADIO_BUTTON, 0, 0},
  237.     {"Toggle Selection", SV_SEL_TOGGLE_SELECT,  SV_RADIO_BUTTON, 0, 0},
  238.     {"Shift Selection",    SV_SEL_SHIFT_SELECT,    SV_RADIO_BUTTON, 0, 0},
  239. };
  240. #endif /* EXPLORER */
  241.  
  242. static SoSceneViewerMenu pulldownData[] = {
  243. //  {name,     id,            subMenu,    subItemCount}
  244.     {"File",    SV_FILE,     fileData,   XtNumber(fileData)   },
  245. #ifndef EXPLORER
  246.     {"Edit",    SV_EDIT,     editData,   XtNumber(editData)   },
  247. #endif /* EXPLORER */
  248.     {"Viewing", SV_VIEW,     viewData,   XtNumber(viewData)   },
  249. #ifndef EXPLORER
  250.     {"Selection", SV_SELECTION, selData, XtNumber(selData)     },
  251. #endif /* EXPLORER */
  252.     {"Editors", SV_EDITOR,     editorData, XtNumber(editorData) },
  253.     {"Manips",  SV_MANIP,     manipData,  XtNumber(manipData)  },
  254.     {"Lights",  SV_LIGHT,     lightData,  XtNumber(lightData)  }
  255. };
  256.  
  257. #endif
  258.